#ifndef __SW_INPUT_H__
#define __SW_INPUT_H__

#include <vector>

#define IMPL_INPUT

struct GLFWwindow;
namespace SW
{
	class Input
	{
	public:
		static bool						IsKeyPressed(int keycode);

		static bool						IsMouseButtonPressed(int mousecode);

		static std::pair<float, float>	GetMousePosition();

		static float					GetMouseX();
		static float					GetMouseY();

		static float					GetYoffset();

		static void						SetWindow(GLFWwindow* window);

		static void						FreeInstance();
		
	private:
		GLFWwindow*						m_Window;
		static Input*					s_Instance;		

		static bool						m_IsScroll;
		static float					m_Yoffset;

		static Input*					GetInstance();
										Input();

		static void						Scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
	};
}

#define INPUT_GLFW_WINDOW_PTR GetInstance()->m_Window

#endif